<?php
// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

require_once ( $mainframe->getPath( 'front_html' ) );

$task		= mosGetParam($_POST, 'task', '');

$id			= intval(mosGetParam($_REQUEST, 'id', 0));
$catid		= intval(mosGetParam($_REQUEST, 'catid', 0));
$cid 		= josGetArrayInts( 'cid' );

switch ($task){
	//VIP
	case 'showcate':
		showListCate ($my->id);
		break;
		
	case 'new':
		editCategory( $my->id, 0 );
		break;	
		
	case 'edit':
		editCategory( $my->id, intval( $cid[0] ) );
		break;
		
	case 'editA':
		editCategory( $my->id, intval( $id ) );
		break;

	case 'save':
		saveCategory($my->id);
		break;
			
	case 'remove':
		delCategory ( $my->id, $cid);
		break;
		
	case 'publish':
		publishCategories( $my->id, $id, $cid, 1 );
		break;

	case 'unpublish':
		publishCategories( $my->id, $id, $cid, 0 );
		break;
			
	case 'cancel':
		mosRedirect( sefRelToAbs('index.php?option=com_uservip&task=showcate'));
		break;				
	//END VIP
	
	default:
		showListCate($my->id);
		break;
}

// ADD FEATURE FOR USER
function checkUserLogin (){
	global $my;
	if (!$my || $my->id == 0){
		$message_logout = 'Phiên làm việc của bạn đã hết hiệu lực, vui lòng đăng nhập lại hệ thống để sử dụng !';
		mosRedirect( sefRelToAbs('index.php?otion=com_login&task=login'), $message_logout );
	}
}

//CHECK NAME CATEGORIES INVALID
function checkNameCategory($name){
	global $database, $my;
	$sql = "SELECT COUNT(*) FROM #__categories WHERE user_id=".$my->id." AND title LIKE'%".$name."%'";
	$database->setQuery($sql);
	$total = $database->loadResult();
	if ($total > 0){
		$msg = 'Tên loại sản phẩm này đã tồn tại trong danh mục loại sản phẩm của bạn !';
		mosRedirect(sefRelToAbs("index.php?option=com_uservip&task=showcate"), $msg);
	}
}

/**
 * VIP
 * **/
//check vip ncc
function checkUserVip(){
	global $my;
	$vip = $my->setPermissionsUser();
	//var_dump($vip); die;
	if ($vip == 11 || $vip == 22){
		if($vip == 11) {
			$params = array(
				'user_class' 		=> 0,
				'user_vip'			=> $vip,
				'message'			=> 'Người mua VIP'
			);
		}else{
			$params = array(
				'user_class' 		=> 1,
				'user_vip'			=> $vip,
				'message'			=> 'Nhà cung cấp VIP'
			);
		}
		return $params;
	}else{
		mosRedirect(sefRelToAbs("index.php?option=com_uservip"), _USER_VIP_MESSAGE_LOG);
	}
}
//function showListCategories
function showListCate( $uid ){
	global $database, $my, $mainframe;
	checkUserLogin();
	$params = checkUserVip();
	//var_dump($params);
	if ($params['user_class'] == 1){
		$title_page = _TITLE_CATE_PRODUCT;
		$mainframe->setPageTitle($title_page);
		$task		= mosGetParam($_REQUEST, 'task', '');
		if ($task == 'edit'){
			editCategory ( $uid, $id );
		}
		
		if (intval(mosGetParam($_REQUEST, section, 0)) > 0 ){
			$where_section = " AND section=".intval(mosGetParam($_REQUEST, section, 0));
		}
		
		$sql = "SELECT COUNT(*) FROM #__categories WHERE user_id=".$uid.$where_section;
		$database->setQuery($sql);
		$total = $database->loadResult();
		
		$sql = "SELECT cd.*, se.title AS title_sec, se.name AS name_sec FROM #__categories AS cd, #__sections AS se WHERE cd.section=se.id AND cd.user_id=".$uid.$where_section." ORDER BY cd.ordering ASC, cd.id DESC";
		$database->setQuery($sql);
		$rows = $database->loadObjectList();
		
		HTML_uservip::showListCategories( $title_page, $total, $rows );
	}else{
		mosRedirect(sefRelToAbs("index.php?option=com_uservip"), _USER_VIP_NCC_ASSIGN);
	}
}
//function add and edit Categories Products
function editCategory ( $uid, $id ){
	global $database, $my, $mainframe;
	$mainframe->setPageTitle(_UPDATE_PRODUCTCATE);
	
	$hiddenmain		= intval(mosGetParam($_REQUEST, 'hiddenmain', 0));
	if ($hiddenmain == 1){
		$id		= intval(mosGetParam($_REQUEST, 'id', 0));
	}
	
	checkUserLogin();
	$params = checkUserVip();
	//var_dump($params);
	if ($params['user_class'] == 1){
		$row = new mosCategory( $database );
		// load the row from the db table
		$row->load( (int)$id );
		// load section
		$sql = "SELECT id, title FROM #__sections WHERE published=1 ORDER BY ordering ASC, id DESC";
		$database->setQuery($sql);
		$lsSection = $database->loadObjectList();
		//load categories from parent_id
		$sql = "SELECT id,title,parent_id FROM #__categories WHERE published=1 AND user_id=".$uid." ORDER BY ordering ASC, id DESC";
		$database->setQuery($sql);
		$lsNewParentID = $database->loadObjectList();
		
		HTML_uservip::editCategories( $row, $lsSection, $lsNewParentID );
	}
}

//save Category
function saveCategory( $uid ) {
	global $database, $mosConfig_absolute_path, $my;
	
	josSpoofCheck();
	
	$ordering		= intval( mosGetParam( $_REQUEST, 'ordering', 0 ) );
	
	checkUserLogin();
	$params = checkUserVip();
	if ($params['user_class'] == 1){
		$row = new mosCategory( $database );
		if (!$row->bind( $_POST, 'folders' )) {
			echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
			exit();
		}
		
		checkNameCategory(addslashes( $row->title ));
		
		$row->title 		= addslashes( $row->title );
		$title_alias 		= mosGetParam($_REQUEST, 'title', '');
		$title_seo			= RemoveSign($title_alias);
		$row->name			= str_replace(" ", "-", $title_seo);
		$row->name			= preg_replace('/[^a-z0-9]+/i','-',$row->name);
		
		$row->name 			= $row->name;
		$row->user_id		= $uid;
		if ($row->id>0){
			$row->parent_id	= intval( mosGetParam( $_POST, 'parent_id', 0 ) );
		}else{
			$row->parent_id = intval( mosGetParam( $_POST, 'parent_id', 0 ) );
		}
	
		if (!$row->check()) {
			echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
			exit();
		}
		
		if (!$row->store()) {
			echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
			exit();
		}
	
		$row->checkin();
		$row->updateOrder( "section = " . $database->Quote( $row->section ) );
	
		$msg = 'Cập nhật loại sản phẩm thành công !';
		mosRedirect( sefRelToAbs('index.php?option=com_uservip&task=showcate'), $msg );
	}	
}

//function del Category
function delCategory ( $uid, $cid){
	global $database, $mosConfig_absolute_path, $my;
	checkUserLogin();
	
	$params = checkUserVip();
	if ($params['user_class'] == 1){
		$total = count( $cid );
		if ( $total < 1) {
			echo "<script> alert('Lựa chọn các danh mục cần xóa'); window.history.go(-1);</script>\n";
			exit;
		}
	
		//seperate contentids
		mosArrayToInts( $cid );
		$cids = 'id=' . implode( ' OR id=', $cid );
		$catids = 'catid=' . implode( ' OR catid=', $cid );
		
		$sql = "SELECT COUNT(*) FROM #__content WHERE ".$catids;
		$database->setQuery($sql);
		$total_product = $database->loadResult();
		if ($total_product > 0){
			$msg = 'Không thành công, bạn chỉ có thể xóa loại sản phẩm nếu trong danh mục không tồn tại sản phẩm nào !';
			mosRedirect(sefRelToAbs("index.php?option=com_uservip&task=showcate"), $msg);
		}
		
		$query = "DELETE FROM #__categories"
		. "\n WHERE ( $cids ) AND user_id=".$uid
		;
		$database->setQuery( $query );
		if ( !$database->query() ) {
			echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>\n";
			exit();
		}
	
		// clean any existing cache files
		mosCache::cleanCache( 'com_uservip' );
	
		$msg 	= $total ." sản phẩm đã được xóa !";
		$return = strval( mosGetParam( $_POST, 'returntask', '' ) );
		mosRedirect( 'index2.php?option='. $option .'&task='. $return .'&sectionid='. $sectionid, $msg );
	}
}

//function show promotion
function showNewsPromotion( $uid ){
	
}

//function add and edit promotion
function editNewPromotion ( $uid, $id ){
	
}

//function del promotion
function delNewPromotion ( $uid, $id){
	
}

//function publish and unpublish categories
function publishCategories( $uid, $categoryid=null, $cid=null, $publish=1 ) {
	global $database, $my;
	
	checkUserLogin();
	$params = checkUserVip();
	if ($params['user_class'] == 1){
		josSpoofCheck();
	
		if (!is_array( $cid )) {
			$cid = array();
		}
		if ($categoryid) {
			$cid[] = $categoryid;
		}
	
		if (count( $cid ) < 1) {
			$action = $publish ? 'hiển thị' : 'ẩn đi';
			echo "<script> alert('Lựa chọn 1 loại sản phẩm cần $action'); window.history.go(-1);</script>\n";
			exit;
		}
	
		mosArrayToInts( $cid );
		$total = count ( $cid );
		$cids = 'id=' . implode( ' OR id=', $cid );
	
		$query = "UPDATE #__categories"
		. "\n SET published = " . (int) $publish
		. "\n WHERE ( $cids )"
		. "\n AND user_id=".$uid
		;
		$database->setQuery( $query );
		if (!$database->query()) {
			echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>\n";
			exit();
		}
	
		if (count( $cid ) == 1) {
			$row = new mosCategory( $database );
			$row->checkin( $cid[0] );
		}
		
		switch ( $publish ) {
			case -1:
				$msg = $total .' Item(s) successfully Archived';
				break;
	
			case 1:
				$msg = $total .' danh mục được hiển thị thành công !';
				break;
	
			case 0:
			default:
				if ( $task == 'unarchive' ) {
					$msg = $total .' danh mục được hiển thị thành công !';
				} else {
					$msg = $total .' danh mục được khóa thành công !';
				}
				break;
		}
	
		mosRedirect( sefRelToAbs('index.php?option=com_uservip'), $msg);
	}	
}
/**
 * END VIP
 * **/
?>